perm filename TMP[MF,ALS] blob
sn#760281 filedate 1984-06-28 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 y←min_y
C00004 00003 @<Encode the glyph@>=
C00006 ENDMK
C⊗;
y←min_y;
while y≤max_y do
begin
x←min_x;
while x≤max_x do
begin
if image=black then begin min_y←y; y←max_y+1; x←max_x; end;
incr(x);
end;
incr(y);
end;
if y=max_y+1 then begin min_y←max_y+1; min_x←max_x+1; end;
y←max_y;
while y≥min_y do
begin
x←min_x;
while x≤max_x do;
begin
if image=black then begin max_y←y; y←min_y; x←max_x; end;
incr(x);
end;
decr(y);
end;
x←min_x;
while x≤max_x do
begin
y←min_y;
while y≤max_y do;
begin
if image=black then begin min_x←x; x←max_x; y←max_y; end;
incr(y);
end;
incr(x);
end;
x←max_x;
while x≤min_x do
begin
y←min_y;
while y≤max_y do;
begin
if image=black then begin max_x←x; x←min_x; y←max_y; end;
incr(y);
end;
decr(x);
end;
@<Encode the glyph@>=
if glyph_ptr[char_code]≠0 then error('Duplicate glyph');
glyph_ptr[char_code]←oc_byte_no div 4;
@!eebug
print_nl; @<Print the image@>;
gubee@/
x←min_x;
while (x≤max_x) do
begin
y←min_y;
for j←1 to num_bytes do
begin
if y<(max_y-7) then @<Get full byte@> else
if (y>max_y) then oc_byte(0)
else @<Get mixed byte@>;
end;
if (oc_byte_no mod 4)≠0 then error('Mod 4 error in |encode_glyph|');
incr(x)
end;
@ @<Get full byte@>=
begin
b←image; incr(y);
for i←2 to 8 do
begin
b←b*2+image;
incr(y);
end;
oc_byte(b);
end
@ @<Get mixed byte@>=
begin
b←image; incr(y);
i:=2;
while y≤max_y do
begin
b:=b*2+image;
incr(y);
incr(i);
end;
for i←i to 8 do b←b*2;
oc_byte(b);
end